import java.math.BigDecimal;
import java.util.Scanner;

/**
 *
 *
 * 5. 旅行社团队票有优惠活动，限额10人团队（必须报满人数才有优惠活动，人数不满则团队比例优惠活动无效），
 *      如果团队中老年人比例占到50%团队票可以打5折，
 *      如果儿童比例达到20%可以打8折，
 *      如果老年人和儿童加起来比例不低于50%则可以打7折。
 *
 *      海南游11-2月份打3折，三亚5，6，7和10月打5折，其余景点不打折。
 *      通过键盘录入相关信息，按#退出录入，最终求该团队的旅行票价是多少
 *          年龄>=60 老年人
 *          年龄<=12岁 为儿童
 *          初始票价为500/人
 */
public class Demo01 {

    public static void main(String[] args) {

        //1.声明初始变量
        int oldCount = 0;
        int childCount = 0;

        double price = 500;

        double personRate = 1;
        double addressRate = 1;

        Scanner scanner = new Scanner(System.in);

        //计数器，记录录入的人数
        int count = 0;
        while (true){
            System.out.println("请输入第"+(count + 1)+"个人的年龄，按#结束");

            String inputText = scanner.next();

            if("#".equals(inputText)){
                break;
            }
            count++;

            //分析录入的年龄
            int age = Integer.parseInt(inputText);

            if(age >= 60){
                oldCount++;
            }
            if(age <= 12){
                childCount++;
            }
            if(count == 10){

                /*
                    计算折扣：
                       中老年人比例占到50%团队票可以打5折
                       oldCount/count
                       儿童比例达到20%可以打8折
                       如果老年人和儿童加起来比例不低于50%则可以打7折
                 */
                BigDecimal oldCountBig = new BigDecimal(oldCount);
                BigDecimal childCountBig = new BigDecimal(childCount);
                BigDecimal countBig = new BigDecimal(count);
                BigDecimal sumOldChild = oldCountBig.add(childCountBig);

                BigDecimal resOld = oldCountBig.divide(countBig,1,BigDecimal.ROUND_HALF_DOWN);
                BigDecimal resChild = childCountBig.divide(countBig,1,BigDecimal.ROUND_HALF_DOWN);
                BigDecimal resSum = sumOldChild.divide(countBig,1,BigDecimal.ROUND_HALF_DOWN);

                if(resOld.compareTo(new BigDecimal(0.5)) >= 0){
                    /*
                        BigDecimal 对象提供给的compareTo() 方法，比较两个值的大小
                            如果前者大，返回1，一个正数
                            如果后者大，返回-1，一个负数
                            如果两者一样大，返回0
                     */
                    personRate = 0.5;
                }else if(resChild.compareTo(new BigDecimal(0.2)) >= 0){
                    personRate = 0.8;
                }else if(resSum.compareTo(new BigDecimal(0.5)) >= 0){
                    personRate = 0.7;
                }
                break;
            }
        }

        //计算景点的打折比例
        System.out.println("请输入地点：");
        String address = scanner.next();

        System.out.println("请输入月份：");
        int month = scanner.nextInt();

        //海南游11-2月份打3折
        if("海南".equals(address)){
            switch (month){
                case 11:
                case 12:
                case 1:
                case 2:
                    addressRate = 0.3;
                    break;
            }
        }else if("三亚".equals(address)){
            //三亚5，6，7和10月打5折
            switch (month){
                case 5:
                case 6:
                case 7:
                case 10:
                    addressRate = 0.5;
                    break;
            }
        }

        /*
            计算最终的金额：
                人数的折扣 * 地点的折扣 * 价格 * 所有人的人数
         */
        BigDecimal personRateBig = new BigDecimal(personRate);
        BigDecimal addressRateBig = new BigDecimal(addressRate);
        BigDecimal priceBig = new BigDecimal(price);

        System.out.println("本次旅行中，老年人="+oldCount+"，儿童="+childCount);
        System.out.println("本次旅行中，人数折扣为："+personRate+",地点折扣为："+addressRate);

        BigDecimal singlePriceBig = personRateBig
                .multiply(addressRateBig)
                .multiply(priceBig)
                .setScale(2,BigDecimal.ROUND_HALF_DOWN);
        System.out.println("单人的金额为："+singlePriceBig.toString()+"原始票价为："+price);

        BigDecimal totalPriceBig = singlePriceBig
                .multiply(new BigDecimal(count))
                .setScale(2,BigDecimal.ROUND_HALF_DOWN);
        System.out.println("本次旅行的总金额为："+totalPriceBig.toString());

    }
}
